const ListModel = require("../../model/forum/list/index");
const DetailModel = require("../../model/forum/detail/index");
const AddModel = require("../../model/forum/add/index");
const PageModel = require("../../model/forum/page/index");
const StarModel = require("../../model/forum/star/index");
const RemoveStarModel = require("../../model/forum/remove-star/index");
const SelectStarStatusModel = require("../../model/forum/select-star-status/index");
const AttentionModel = require("../../model/forum/attention/index");
const UpdateUserFansModel = require("../../model/forum/update-user-fans/index");
const forum = {
    // 查询论坛列表
    list: async (req, res) => {
        await ListModel().then(data => {
            if (data.length) {
                // 使用 sort() 方法对数组进行排序
                data.sort((a, b) => {
                    // 将日期字符串转换为 Date 对象进行比较
                    const dateA = new Date(a.date);
                    const dateB = new Date(b.date);

                    // 对比两个日期对象，返回负值表示 a 在 b 前，返回正值表示 a 在 b 后，返回 0 表示相等
                    return dateB - dateA; // 倒序排序
                });
                res.returnMsg({list: data}, '查询成功', 200)
            } else {
                res.returnMsg(null, '系统错误，请联系管理员', 500)
            }
        })
    },
    // 查询论坛详情
    detail: async (req, res) => {
        const postID = req.query.postID
        await DetailModel(postID).then(data => {
            // console.log(data)
            if (data.length) {
                res.returnMsg({list: data}, '查询成功', 200)
            } else {
                res.returnMsg(null, '系统错误，请联系管理员', 500)
            }
        })
    },
    // 新增帖子
    add: async (req, res) => {
        const newData = req.body
        await AddModel(newData).then(data => {
            if (data.affectedRows == 1) {
                res.returnMsg({list: data}, '新增成功', 200)
            } else {
                res.returnMsg(null, '系统错误，请联系管理员', 500)
            }
        })
    },
    // 分页查询论坛列表
    page: async (req, res) => {
        const newData = req.query.title
        await PageModel(newData).then(data => {
            if (data.length) {
                // 使用 sort() 方法对数组进行排序
                data.sort((a, b) => {
                    // 将日期字符串转换为 Date 对象进行比较
                    const dateA = new Date(a.date);
                    const dateB = new Date(b.date);

                    // 对比两个日期对象，返回负值表示 a 在 b 前，返回正值表示 a 在 b 后，返回 0 表示相等
                    return dateB - dateA; // 倒序排序
                });
                res.returnMsg({list: data}, '查询成功', 200)
            } else {
                res.returnMsg(null, '系统错误，请联系管理员', 500)
            }
        })
    },
    // 收藏帖子
    star: async (req, res) => {
        const newData = req.body
        await StarModel(newData).then(data => {
            if (data.affectedRows == 1) {
                    res.returnMsg('', '收藏成功', 200)
            } else {
                res.returnMsg(null, '系统错误，请联系管理员', 500)
            }
        })
    },
    // 移除收藏
    removeStar: async (req, res) => {
        const newData = req.body
        await RemoveStarModel(newData).then(data => {
            console.log(data)
            if (data.affectedRows == 1) {
                res.returnMsg( '','已取消收藏', 200)
            } else {
                res.returnMsg(null, '系统错误，请联系管理员', 500)
            }
        })
    },
    // 查询收藏状态
    selectStarStatus: async (req, res) => {
        const newData = req.query
        await SelectStarStatusModel(newData).then(data => {
            if (data) {
                if(data.length > 0){
                    res.returnMsg({starStatus: true}, '查询成功', 200)
                }else{
                    res.returnMsg({starStatus: false}, '查询成功', 200)
                }
            } else {
                res.returnMsg(null, '系统错误，请联系管理员', 500)
            }
        })
    },
    // 关注/移除关注
    attention: async (req, res) => {
        const newData = req.body
        await AttentionModel(newData).then(data => {
            if (data.affectedRows == 1) {
                // 更新用户粉丝量
                UpdateUserFansModel(newData).then(result => {
                    if(result.affectedRows == 1){
                        res.returnMsg({list: result}, '数据更新成功', 200)
                    }else{
                        res.returnMsg(null, '系统错误，请联系管理员', 500)
                    }
                })
            } else {
                res.returnMsg(null, '系统错误，请联系管理员', 500)
            }
        })
    },
}
module.exports = forum;
